One of the uses of communication networks, such as cable television, the Internet and the like, is for the distribution of movies and/or other video programs in the form of video streams. Video streams are formed from a sequence of discrete images referred to as frames, with corresponding display times. The transmission of video streams requires wide bandwidth and therefore video streams are generally compressed before transmission. For a given quality level, some video frames (e.g., frames having a large amount of detail) can be compressed only to a small extent, while other video frames (e.g., frames merely showing a blue sky) can be compressed to a larger extent, without substantial loss of quality. Therefore, many video compression methods provide variable bit-rate (VBR) video streams, in which different frames are compressed by different amounts.
Handling VBR video streams is somewhat inconvenient in that at different times different amounts of data are managed. Consequently, some protocols, such as the MPEG-2 transport stream (TS) protocol, handle only constant bit rate video channels. When a single VBR stream is to be handled, the VBR stream is encapsulated in a constant bit rate video channel, with padding bits, such as null transport stream packets of the MPEG-2 TS protocol, or other data unrelated to the video stream, filling the gaps between the VBR stream and the constant bit rate channel.
When a plurality of video streams are delivered together to a single location, the combined size of the encapsulating channels of the video streams may be substantially greater than the combined size of the video streams. Statistical multiplexers are designed to combine a plurality of VBR video streams onto a single channel, taking advantage of the fact that different video streams statistically require momentary high bit rates at different times. Statistical multiplexers also generally compress one or more of the multiplexed video streams when required and/or slightly change the timing of frames to enhance the multiplexing process.
U.S. Pat. No. 6,195,388 to Choi et al., the disclosure of which is incorporated herein by reference in its entirety, describes a statistical multiplexer.
U.S. Pat. No. 7,266,133 to Wu et al., the disclosure of which is incorporated herein by reference in its entirety, suggests a two stage statistical multiplexer, for cases in which large numbers of streams need to be multiplexed together.
Since statistical multiplexers are relatively complex, there have been various attempts to reduce their work load so that they can be made simpler.
US patent publication 2006/0195881 to Segev et al., the disclosure of which is incorporated herein by reference in its entirety, suggests generating compressed replacement blocks in advance for blocks of the video stream. When necessary, the statistical multiplexer uses these pre-prepared blocks instead of recompressing the blocks of the stream. This publication further describes performing statistical multiplexing of a channel, by software running on a processor not designed specifically for statistical multiplexing (e.g., not including a dedicated ASIC or FPGA).
In video on demand (VoD) cable television systems, video streams are generally provided to subscribers using quadrature amplitude modulation (QAM). The video streams are stored on VoD servers which transmit them to QAM modulators servicing clients on demand. The stored and transmitted video streams are generally CBR streams, which are easier to handle. The QAM modulator receives and modulates the stream and transmits it to the receiver, where a QAM tuner demodulates the stream and displays it on a television set. Some QAM modulators, such as the NSG 9116 Edge QAM, described for example at http://www.harmonicinc.com/view_collateral.cfm?ID=1346, are adapted to receive a plurality of single or multiple program channels and to combine them into a single channel, prior to modulation. The QAM modulator, however, usually does not perform statistical multiplexing, as such a function would make the modulator very complex. Instead, the QAM simply takes the CBR streams and combines them to generate a multi-program CBR stream having a size which is a sum of its CBR components. This simplicity is achieved at the expense of not using statistical multiplexing.